MySQL的连接(短,长,池)

您所在的位置:网站首页 mysql 实现长链接 MySQL的连接(短,长,池)

MySQL的连接(短,长,池)

2023-08-16 18:48| 来源: 网络整理| 查看: 265

目前 PHP 程序连接数据库是默认采用长连接模式

短连接 mysql_connect()

1、程序和数据库通信时建立连接,执行操作后,连接关闭 2、基本步骤:连接->数据传输->关闭连接 3、慢速网络下使用短连接,连接的开销会很大 4、在生产繁忙的系统中,连接也可能会收到系统端口数的限制 5、每秒建立上千个连接,连接断开后,端口不会被马上回收利用,必须经历一个“FIN”阶段的等待,直到可被回收利用为止,这样导致端口资源不够用

长连接 mysql_pconnect()

1、长连接是指程序之间的连接在建立之后,就一直打开,被后续程序重用 2、当收到一个永久连接请求时,将检查是否已经存在一个(前面已经开启了的)相同的永久连接 3、如果存在,则直接使用这个连接,不存在,则建立一个新的连接(“相同”指用相同的用户名和密码到相同主机的连接) 4、客户端角度,不用每次创建新连接,若客户端对服务器的连接请求很频繁,永久连接将更高效 5、对于高并发业务,若果可能会碰到连接的冲击时,推荐使用长连接或连接池 6、服务器角度,可以节省创建连接的开销,但维持长连接需要内存 7、扩展性好的站点,大部分的访问不需要连接数据库,如果需要频繁访问数据库,可能会在流量增大时候产生性能问题,此时, 长短连接都无法解决问题,应该进行合理的设计和优化来避免性能问题

当执行完毕后,到 mysql 服务器的持久连接不会被关闭,此连接将保持打开以备以后使用,即mysql_close() 不会关闭由 mysql_pconnect() 建立的连接。

好处:对于高并发,少数客户端频繁连接服务器,可以节省连接开销 缺点:维持长连接需要额外消耗内存资源,长连接不可以滥用,慎用

$dbh=new PDO($dsn,$username,$userpass, [PDO::ATTR_PERSISTENT => true]); 长连接,短连接对比

查看mysql连接数: show full processlist,短连接每次新增连接,连接id会自增 ,长连接被缓存,不会新建连接id, 长时间不使用,timeout时间后,mysql_server会关闭长连接 而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误

长连接还是短连接首先是由服务端决定的,如果服务端支持长连接,则可以由客户端决定是长连接还是短连接。长连接其实就是处理完数据是否调用了closesocket而已,将连接资源保存在内存中。

连接池

数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对连接池中的连接进行申请,使用,释放。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。 无可以连接时,判断是否超过最大连接数,没有则创建新的连接放入连接池,如果超过最大连接数,则请求被加入到等待队列中。 连接超过使用次数会被关闭,关闭连接池程序时会关闭所有的连接


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3